Saeid Safaei Loader Logo Saeid Safaei Loader Animated
لطفا شکیبا باشید
0

سعیدصفایی سعیدصفایی

سعید صفایی
آشنایی با مفهوم Doubly Linked List

Doubly Linked List

لیست پیوندی دو طرفه نوعی از لیست پیوندی است که هر عنصر به دو عنصر قبلی و بعدی خود اشاره دارد.

لیست پیوندی دو طرفه (Doubly Linked List) یکی از انواع ساختارهای داده‌ای است که در آن هر گره (Node) نه تنها به گره بعدی خود اشاره می‌کند، بلکه به گره قبلی نیز اشاره دارد. این ویژگی به برنامه‌نویسان این امکان را می‌دهد که بتوانند به راحتی به هر دو طرف لیست (یعنی به گره قبلی و بعدی) دسترسی پیدا کنند، که این امر عملکردهای خاصی مانند حذف گره‌ها یا پیمایش در لیست به جلو و عقب را تسهیل می‌کند.

ساختار لیست پیوندی دو طرفه

در لیست پیوندی دو طرفه، هر گره دارای دو بخش است:

  • داده: بخشی که داده مورد نظر ذخیره می‌شود (این داده می‌تواند یک عدد، رشته یا هر نوع داده‌ای باشد).
  • اشاره‌گرها: هر گره دارای دو اشاره‌گر است:
    • اشاره‌گر به گره بعدی: این اشاره‌گر به گره بعدی در لیست پیوندی اشاره می‌کند.
    • اشاره‌گر به گره قبلی: این اشاره‌گر به گره قبلی در لیست پیوندی اشاره می‌کند.

به این ترتیب، برخلاف لیست پیوندی تک‌طرفه که فقط به گره بعدی اشاره دارد، لیست پیوندی دو طرفه این امکان را می‌دهد که به راحتی از هر دو طرف لیست داده‌ها را دسترسی پیدا کرد.

مثال پیاده‌سازی لیست پیوندی دو طرفه در Python

در اینجا یک مثال ساده از نحوه پیاده‌سازی لیست پیوندی دو طرفه در زبان Python آورده شده است. در این پیاده‌سازی، هر گره دارای دو اشاره‌گر به گره قبلی و گره بعدی است:

 class Node:
def __init__(self, data):
self.data = data
self.next = None
self.prev = None class DoublyLinkedList:
def __init__(self):
self.head = None
def append(self, data):
new_node = Node(data)
if not self.head:

self.head = new_node
else:

temp = self.head

while temp.next:


temp = temp.next

temp.next = new_node

new_node.prev = temp # اتصال به گره قبلی
def display(self):
temp = self.head
while temp:

print(temp.data, end=" <-> ")

temp = temp.next
print("None")
def display_reverse(self):
temp = self.head
if not temp:

return
while temp.next:

temp = temp.next # رسیدن به آخرین گره
while temp:

print(temp.data, end=" <-> ")

temp = temp.prev
print("None") # استفاده از لیست پیوندی دو طرفه dll = DoublyLinkedList() dll.append(10) dll.append(20) dll.append(30) dll.display()
# نمایش لیست از جلو به عقب: 10 <-> 20 <-> 30 <-> None dll.display_reverse() # نمایش لیست از عقب به جلو: 30 <-> 20 <-> 10 <-> None

در این مثال، ابتدا گره‌ها به لیست پیوندی دو طرفه اضافه می‌شوند و سپس با استفاده از دو متد display() و display_reverse() لیست از جلو و عقب نمایش داده می‌شود. در هنگام افزودن هر گره جدید، اشاره‌گر گره قبلی به‌روز می‌شود تا پیوند دو طرفه حفظ شود.

مزایای لیست پیوندی دو طرفه

  • دسترسی دو طرفه: به راحتی می‌توان به هر دو طرف لیست دسترسی داشت، چه به جلو و چه به عقب. این ویژگی برای انجام عملیات‌هایی مانند حذف یا جستجوی سریع در لیست مفید است.
  • دستگاه‌های متقابل: امکان پیمایش از ابتدا به انتها و بالعکس در لیست فراهم می‌شود.
  • عملیات‌های سریعتر: حذف گره از هر نقطه در لیست به سادگی امکان‌پذیر است زیرا به گره قبلی دسترسی داریم.

معایب لیست پیوندی دو طرفه

  • مصرف حافظه بیشتر: لیست پیوندی دو طرفه نسبت به لیست پیوندی تک‌طرفه حافظه بیشتری مصرف می‌کند زیرا هر گره نیاز به دو اشاره‌گر دارد (یک اشاره‌گر به گره بعدی و دیگری به گره قبلی).
  • پیچیدگی در پیاده‌سازی: پیاده‌سازی لیست پیوندی دو طرفه پیچیده‌تر از پیاده‌سازی لیست پیوندی تک‌طرفه است و نیاز به مدیریت دقیق اشاره‌گرها دارد.

کاربردهای لیست پیوندی دو طرفه

لیست پیوندی دو طرفه در بسیاری از زمینه‌ها کاربرد دارد، از جمله:

  • پیاده‌سازی صف‌های دو طرفه (Deque) که نیاز به افزودن یا حذف داده‌ها از هر دو طرف دارند.
  • پیاده‌سازی ساختارهای داده‌ای پیچیده مانند گراف‌ها یا درخت‌ها که نیاز به دسترسی به گره‌های قبلی و بعدی دارند.
  • در سیستم‌هایی که نیاز به انجام عملیات‌هایی مانند پیمایش یا جستجو در دو جهت مختلف دارند.

در نهایت، لیست پیوندی دو طرفه یک ساختار داده‌ای مفید و کاربردی است که می‌تواند در برنامه‌هایی که نیاز به دسترسی به هر دو طرف داده‌ها دارند، مورد استفاده قرار گیرد. برای آشنایی بیشتر با مفاهیم لیست پیوندی دو طرفه و دیگر ساختارهای داده‌ای، می‌توانید به سایت saeidsafaei.ir مراجعه کنید و از اسلایدهای محمد سعید صفایی بهره‌مند شوید.

اسلاید آموزشی

آرایه ها و تمرینات مکمل فلوچارت

آرایه ها و تمرینات مکمل فلوچارت
مبانی کامپیوتر و برنامه سازی

در این مبحث، به شناخت، انواع و طرز استفاده از آرایه‌ها پرداخته می‌شود و چندین مثال عملی با استفاده از فلوچارت و آرایه‌ها رسم خواهیم کرد. همچنین، با توجه به اهمیت فلوچارت در طراحی الگوریتم‌ها، در بخش دوم اسلایدها، چندین تمرین مهم با رسم فلوچارت در اختیار شما قرار خواهد گرفت تا مهارت‌های عملی شما در این زمینه تقویت شود.

مقالات آموزشی برای آشنایی با اصطلاحات دنیای کامپیوتر

روش تقسیم‌بندی ثابت زیربخش‌های شبکه که در آن تمامی زیربخش‌ها از اندازه یکسان برخوردارند.

فرایند به هم پیوستن یا به هم رسیدن دو یا چند مولفه برای تبادل داده‌ها در شبکه.

مجموعه‌ای از داده‌ها است که به صورت ساختار یافته ذخیره شده و به راحتی می‌توان به آن‌ها دسترسی داشت.

هوش مصنوعی مولد به استفاده از الگوریتم‌های هوش مصنوعی برای تولید داده‌ها و محتواهایی مشابه انسان اطلاق می‌شود.

رباتیک خودمختار به ربات‌هایی اطلاق می‌شود که قادر به انجام وظایف پیچیده بدون نیاز به دخالت انسان هستند.

کابل‌های زوج به هم تابیده با غلاف فلزی برای کاهش تداخل الکترومغناطیسی.

هوش مصنوعی جغرافیایی به استفاده از الگوریتم‌های هوش مصنوعی برای تحلیل و پردازش داده‌های جغرافیایی و مکانی اطلاق می‌شود.

الگوریتم مرتب‌سازی به فرآیند مرتب کردن عناصر یک آرایه یا لیست بر اساس ترتیب خاص گفته می‌شود.

بلاکچین 2.0 به نسخه‌ای پیشرفته از بلاکچین گفته می‌شود که ویژگی‌هایی مانند قراردادهای هوشمند و مقیاس‌پذیری بهتر را ارائه می‌دهد.

لیست پیوندی ساختار داده‌ای است که هر عنصر آن شامل داده و اشاره‌گری به عنصر بعدی است. این ساختار برای ذخیره و دسترسی سریع به داده‌ها استفاده می‌شود.

انتقال سبک عصبی یک تکنیک یادگیری ماشین است که برای اعمال سبک هنری به تصاویر استفاده می‌شود.

ثبات‌ها یا رجیسترها حافظه‌های بسیار سریع و کوچک هستند که درون پردازنده قرار دارند. آن‌ها برای ذخیره‌سازی داده‌ها و دستورالعمل‌های پردازش شده با سرعت بالا استفاده می‌شوند.

Base به همان معنای Radix است که به تعداد ارقام مورد نیاز برای نوشتن عدد در سیستم‌های عددی مختلف اشاره دارد.

نوعی VLAN که به دستگاه‌ها اجازه می‌دهد در یک VLAN مشترک باشند اما نتوانند به یکدیگر دسترسی داشته باشند.

جدولی که در آن آدرس‌های MAC و IP دستگاه‌های متصل به شبکه ذخیره می‌شود.

دستور else در کنار دستور if قرار می‌گیرد و وقتی که شرط if برقرار نباشد، دستورات داخل else اجرا می‌شود.

هوش مصنوعی لبه (Edge AI) استفاده از مدل‌های یادگیری ماشین و پردازش داده‌ها را در دستگاه‌های لبه شبکه (نزدیک به کاربر) تسهیل می‌کند.

اطلاعات خامی که وارد کامپیوتر می‌شود تا پردازشی روی آن صورت گیرد. داده‌ها پس از پردازش به صورت اطلاعات ذخیره یا در خروجی نمایش داده می‌شوند.

دروازه منطقی AND که زمانی خروجی 1 می‌دهد که ورودی‌های آن هر دو 1 باشند.

روش تبدیل به سیستمی است که برای تبدیل یک عدد از مبنای یکی به مبنای دیگر استفاده می‌شود.

نوسانات یا تغییرات در زمان تأخیر انتقال بسته‌های داده در شبکه.

پردازش زبان طبیعی (NLP) به استفاده از الگوریتم‌های هوش مصنوعی برای تحلیل و درک زبان‌های انسانی اشاره دارد.

جدول مسیریابی مسیرهای فعلی شبکه را مشخص می‌کند، در حالی که پایگاه داده توپولوژیکی اطلاعات ساختاری شبکه را ذخیره می‌کند.

نوعی مسیریابی که علاوه بر شمارش تعداد هاپ‌ها، مسیر دقیق عبوری داده‌ها را نیز ثبت می‌کند.

بهینه‌سازی یادگیری عمیق به تکنیک‌هایی اطلاق می‌شود که برای بهبود عملکرد مدل‌های یادگیری عمیق به کار می‌روند.

توسعه بلاکچین‌های قابل تعامل به این معنا است که بلاکچین‌های مختلف می‌توانند به راحتی با یکدیگر تعامل داشته باشند.

پهنای باند در ارتباطات بی‌سیم که تحت تأثیر فاصله، موانع و تداخل‌ها قرار می‌گیرد.

متد مشابه به تابع است اما معمولاً در زبان‌های شی‌گرا استفاده می‌شود و متعلق به یک کلاس خاص است. متدها می‌توانند بر روی داده‌های شی عمل کنند.

حالت انتقال داده دو طرفه همزمان که در آن هر دو دستگاه می‌توانند به صورت همزمان داده‌ها را ارسال و دریافت کنند.

نسخه چهارم پروتکل اینترنت که از آدرس‌های 32 بیتی استفاده می‌کند.

اتصال 5G به نسل پنجم ارتباطات بی‌سیم اشاره دارد که سرعت و ظرفیت شبکه را به طور قابل توجهی افزایش می‌دهد.

اولویت عملگرها به ترتیب اهمیت و اجرای عملیات‌ها اشاره دارد. این اولویت‌ها به نحوه اجرای صحیح دستورات در زبان‌های برنامه‌نویسی کمک می‌کند.

شبکه‌بندی فرآیند اتصال چندین دستگاه به یکدیگر است تا اطلاعات بین آن‌ها تبادل شود.

محاسبات هوش مصنوعی لبه به پردازش داده‌ها در نزدیکی منابع داده در لبه شبکه اطلاق می‌شود که سرعت و دقت پردازش را افزایش می‌دهد.

مهندسی تقویت‌شده توسط هوش مصنوعی به استفاده از الگوریتم‌های هوش مصنوعی برای بهبود و تسهیل فرآیندهای مهندسی و طراحی اطلاق می‌شود.

بکشید مشاهده بستن پخش
Saeid Safaei Scroll Top
0%